﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using AutorizacionViajesMVC.WSAutorizacion;
using System.ServiceModel;

namespace AutorizacionViajesMVC.Controllers
{
    public class AutorizacionController : Controller
    {
        public List<WSAutorizacion.Autorizacion> listarAutorizaciones()
        {
            WSAutorizacion.AutorizacionesClient proxy = new WSAutorizacion.AutorizacionesClient();
            List<WSAutorizacion.Autorizacion> autorizaciones = proxy.ListarAutorizaciones().ToList();
            return autorizaciones;
        }

        public WSAutorizacion.Autorizacion obtenerAutorizacion(int Cod)
        {
            WSAutorizacion.AutorizacionesClient proxy = new WSAutorizacion.AutorizacionesClient();
            WSAutorizacion.Autorizacion autorizacion = proxy.ObtenerAutorizacion(Cod);
            return autorizacion;
        }

        public WSAutorizacion.Autorizacion modificarAutorizacion(int codigo, int codsol,int codarea,string codg, string ccosto,string dni, int pviajan,string ruta ,string fedes,string fehas,string motivo,string mone, double hot,double via,double movi,double tele,double gast,double iaere,double pasa,double combu,double otro, string sta)
        {
            WSAutorizacion.AutorizacionesClient proxy = new WSAutorizacion.AutorizacionesClient();
            return proxy.ModificarAutorizacion(codigo,codsol,codarea,codg, ccosto, dni,pviajan,ruta,fedes,fehas,motivo,mone,hot,via,movi,tele,gast,iaere,pasa,combu,otro,sta);
        }

        public void eliminarAutorizacion(int Cod)
        {
            WSAutorizacion.AutorizacionesClient proxy = new WSAutorizacion.AutorizacionesClient();
            proxy.EliminarAutorizacion(Cod);

        }

        public WSAutorizacion.Autorizacion crearAutorizacion(int codsol, int codarea, string codg, string ccosto, string dni, int pviajan, string ruta, string fedes, string fehas, string motivo, string mone, double hot, double via, double movi, double tele, double gast, double iaere, double pasa, double combu, double otro)
        {
            WSAutorizacion.AutorizacionesClient proxy = new WSAutorizacion.AutorizacionesClient();
            return proxy.CrearAutorizacion(codsol, codarea, codg, ccosto, dni, pviajan, ruta, fedes, fehas, motivo, mone, hot, via, movi, tele, gast, iaere, pasa, combu, otro);
        }


        public ActionResult Index()
        {
            List<WSAutorizacion.Autorizacion> autorizaciones = listarAutorizaciones();
            return View(autorizaciones);
        }


        public ActionResult Details(int id)
        {
            WSAutorizacion.Autorizacion Autorizacion = obtenerAutorizacion(id);
            return View(Autorizacion);
        }


        public ActionResult Create()
        {
            WSAutorizacion.Autorizacion Autorizacion = new WSAutorizacion.Autorizacion();
            return View(Autorizacion);
        } 

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                WSAutorizacion.Autorizacion res = crearAutorizacion(int.Parse(collection["CodSol"]), int.Parse(collection["CodArea"]), collection["CodEmpGe"], collection["CentroCos"], collection["AUDNI"], int.Parse(collection["PerViajan"]), collection["Ruta"], collection["FechaDes"], collection["FechaHas"], collection["Motivo"], collection["Moneda"], double.Parse(collection["Hotel"]), double.Parse(collection["Viaticos"]), double.Parse(collection["Movilidad"]), double.Parse(collection["Telefono"]), double.Parse(collection["Gastos"]), double.Parse(collection["IMPAereo"]), double.Parse(collection["Pasaje"]), double.Parse(collection["Combustible"]), double.Parse(collection["Otros"]));
                return RedirectToAction("Index");
            }
            catch (FaultException<ValidationException> e)
            {
                TempData["error"] = e.Message;
                return View("Create");
            }
            catch (Exception ex)
            {
                TempData["error"] = ex.Message;
                return RedirectToAction("Create");
            }
        }
        
 
        public ActionResult Edit(int id)
        {
            WSAutorizacion.Autorizacion Autorizacion = obtenerAutorizacion(id);
            return View(Autorizacion);
        }

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            //try
            //{
            //    WSAutorizacion.Autorizacion res = modificarAutorizacion(int.Parse(collection["Codigo"]), collection["Nombre"], collection["Apellidos"], int.Parse(collection["Area"]), collection["CodigoG"], collection["CCosto"], collection["DNI"], collection["Status"]);
            //    return RedirectToAction("Index");
            //}
            //catch
            //{
                return View();
            //}
        }

        //
        // GET: /Autorizacion/Delete/5
 
        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /Autorizacion/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here
 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
